home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 1 / LIGHT-ROM 1 (Amiga Library Services)(1994).iso / ffdisks / d996.lha / Startup-Menu / Source / SMPrefs / Window.PAS < prev    next >
Pascal/Delphi Source File  |  1994-04-05  |  24KB  |  660 lines

  1. { ===================================================================== }
  2.  
  3. Procedure displayBevelboxes;  { used to display and refresh the boxes }
  4. Begin                         { output                                }
  5.      
  6.    DrawBevelBoxA(TheWindow^.RPort, Sizes[S_G2_L]+Sizes[S_G2_W]+4, 
  7.        Sizes[TBS]+2, Sizes[S_G3_W]+sizes[extra]+7, 
  8.        Gads[G_LV]^.TopEdge + gads[G_LV]^.Height-2 -Sizes[TBS], 
  9.        @Beveltags);
  10.        
  11.    {DrawBevelBoxA(TheWindow^.RPort, Sizes[S_G2_L]+Sizes[S_G2_W]+4, 
  12.        Sizes[TBS]+2, Sizes[S_G3_W]+sizes[extra]+7, 
  13.        Gads[G_S_SCRID]^.TopEdge + gads[G_S_SCRID]^.Height +3 -Sizes[TBS], 
  14.        @Beveltags);
  15. }
  16. End;
  17.  
  18. { ===================================================================== }
  19.  
  20. Procedure setupbevelBoxes;  { set up boxes }
  21. Begin
  22.    Beveltags[1].ti_Tag  := GT_VisualInfo;
  23.    BevelTags[1].ti_Data := LONG(vi);
  24.    BevelTags[2].ti_Tag  := GTBB_Recessed;
  25.    BevelTags[2].ti_Data := True_;
  26.    BevelTags[3].ti_Tag  := TAG_DONE;
  27. End;
  28.  
  29. (* ===================================================================== *) 
  30.  
  31. Procedure RefreshWin;
  32. begin
  33.     GT_BeginRefresh(TheWindow);
  34.     DisplayBevelBoxes;
  35.     GT_EndRefresh(TheWindow, True);
  36. end;
  37.  
  38. (* ===================================================================== *)
  39.  
  40. Procedure UpDateFont;
  41. VAR
  42.     t : array[0..2] of tTagItem;
  43.     ts2 : string;
  44. begin
  45.     FSplit(retrieveStr(CD.cd_Font.ta_Name), ts2, ts, ts2); 
  46.     (* Just pretend it is a file name *)
  47.     Str(CD.cd_Font.ta_YSize, ts2);
  48.     TS := TS + ' ' + TS2 + #0;
  49.     T[0].ti_Tag  := GTTX_Border;
  50.     T[0].ti_Data := True_;
  51.     T[1].ti_Tag  := GTTX_Text;
  52.     T[1].ti_Data := Long(@ts[1]);
  53.     T[2].ti_Tag  := TAG_DONE;
  54.     GT_SetGadgetAttrsA(gads[G_TD_FONT], Thewindow, NIL, @T);
  55. end;
  56.  
  57. (* ===================================================================== *)
  58.  
  59. Procedure ErrExit(Errortxt : string; ExitCode : integer);
  60.  
  61. Begin
  62.     ErrorExit('** SMPrefs Error **'#0, Errortxt);
  63.     CloseLibrary(pLibrary(IntuitionBase));
  64.     If GadToolsBase <> NIL then CloseLibrary(pLibrary(GadtoolsBase));
  65.     If UtilityBase <> NIL then CloseLibrary(pLibrary(UtilityBase));
  66.     If AslBase <> NIL then CloseLibrary(pLibrary(AslBase));
  67.     If GfxBase <> NIL then CloseLibrary(pLibrary(GfxBase));
  68.     If ReqToolsBase <> NIL then CloseLibrary(pLibrary(ReqToolsBase));
  69.     If TheWindow <> NIL then CloseWindow(TheWindow);
  70.     If gads[G_NI] <> NIL then FreeGadgets(gads[G_NI]);
  71.     If vi <> NIL then Freevisualinfo(vi);
  72.     FreeRemember(@RememberKey, True);
  73.     Halt(exitcode);
  74. end;
  75.  
  76. (* ===================================================================== *)
  77.  
  78. Procedure open_window;
  79.  
  80.     
  81. Var 
  82.     Window_Tags : Array[0..17] Of tTagItem;
  83.    Gadget_Tags : Array[0..4] Of tTagItem;
  84.    sampTxt     : tIntuiText;
  85.     screendef   : pScreen;
  86.    
  87. Begin
  88.     WindowIDCMP := INTEGERIDCMP Or IDCMP_REFRESHWINDOW 
  89.                        Or BUTTONIDCMP Or LISTVIEWIDCMP 
  90.                        OR CHECKBOXIDCMP;
  91.    gads[G_NI]  := NIL;
  92.    pubname := LockFrontPubScr(screendef);
  93.  
  94. (* Get visual info and create context *)
  95.        vi := GetVisualInfoA(screendef, NIL);
  96.    If vi = NIL Then
  97.       ErrExit('Failed to get visual info'#0, 0);
  98.    Gads[G_CC] := CreateContext(@gads[G_NI]);
  99.    If Gads[G_CC] = NIL Then
  100.       ErrExit('Failed to create context'#0, 0);   
  101. (* Get some data from the screen *)
  102.  
  103.     My_Font := Screendef^.Font^;
  104.    Sizes[TBS]   := screendef^.WBorTop + (screendef^.Font^.ta_YSize + 1);
  105.    Sizes[S_Gad_H] := sizes[TBS] + 1;
  106.    sizes[S_WB_T]    := Screendef^.WBorTop;
  107.    sizes[S_WB_L]    := Screendef^.WBorLeft;
  108.    sizes[S_WB_R]    := Screendef^.WBorRight;
  109.    sizes[S_WB_B]    := Screendef^.WBorBottom;
  110.    
  111.      Samptxt.ITextFont := @My_Font;
  112.     Sizes[S_G1_L] := Sizes[S_WB_L] + Sizes[S_WB_L];
  113.     Samptxt.IText     := @G_B_BOTTOMtxt[1];
  114.     Sizes[S_G1_W] := IntuiTextLength(@Samptxt) + 10;
  115.      Samptxt.IText     := @Sampstr[1];
  116.     Sizes[S_G2_W]    := IntuiTextLength(@Samptxt) + 10;
  117.      Samptxt.IText     := @G_S_TXTtxt[1];
  118.     Sizes[S_G2_L]    := sizes[S_G1_L] + sizes[S_G1_W] + sizes[S_WB_L];
  119.     Samptxt.IText     := @sampstr2[1];
  120.     Sizes[S_G3_W]    := IntuiTextLength(@Samptxt) + 20;
  121.     Sizes[S_G3_L]  := sizes[S_G2_L] + sizes[S_G2_W] + 6;
  122.     Samptxt.IText     := @G_IK_ACROStxt[1];
  123.     sizes[extra] := IntuiTextLength(@Samptxt) + 10;
  124.     Samptxt.IText     := CstrConstPtrAR(@RememberKey, 'The Requesters');
  125.     sizes[S_SCRID_W] := IntuiTextLength(@Samptxt) + 20;
  126. (* Initilise gadget structures *)
  127.    Gadget_Tags[0].ti_Tag  := GA_Disabled;
  128.    Gadget_Tags[0].ti_Data := True_;
  129.    Gadget_Tags[1].ti_Tag  := GT_UnderScore;
  130.    Gadget_Tags[1].ti_Data := LONG('_');
  131.    Gadget_Tags[2].ti_Tag  := TAG_END;
  132.    
  133.    With GadgetFlags Do Begin
  134.       ng_TextAttr   := @My_Font;
  135.       ng_LeftEdge   := sizes[S_G1_L];
  136.       ng_TopEdge    := Sizes[TBS]+2;
  137.       ng_Width      := Sizes[S_G1_W];
  138.       ng_Height     := Sizes[S_GAD_H];
  139.       ng_GadgetText := @G_B_TOPtxt[1];
  140.       ng_VisualInfo := vi;
  141.       ng_GadgetID   := G_B_TOP;
  142.    End;
  143. (* create gadgets *)
  144.    Gads[G_B_TOP] := CreateGadgetA(BUTTON_KIND, Gads[G_CC], @Gadgetflags, @Gadget_Tags);
  145.    
  146.    With GadgetFlags Do Begin
  147.       ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 2;
  148.       ng_GadgetText := @G_B_UPtxt[1];
  149.       ng_GadgetID   := G_B_UP;
  150.    End;
  151.    Gads[G_B_UP] := CreateGadgetA(BUTTON_KIND, Gads[G_B_TOP], @Gadgetflags, @Gadget_Tags);
  152.    
  153.    With GadgetFlags Do Begin
  154.       ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 2;
  155.       ng_GadgetText := @G_B_DOWNtxt[1];
  156.       ng_GadgetID   := G_B_DOWN;
  157.    End;
  158.     Gads[G_B_DOWN] := CreateGadgetA(BUTTON_KIND, Gads[G_B_UP], @Gadgetflags, @Gadget_Tags);
  159.    
  160.    With GadgetFlags Do Begin
  161.       ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 2;
  162.       ng_GadgetText := @G_B_BOTTOMtxt[1];
  163.       ng_GadgetID   := G_B_BOTTOM;
  164.    End;
  165.    Gads[G_B_BOTTOM] := CreateGadgetA(BUTTON_KIND, Gads[G_B_DOWN], @Gadgetflags, @Gadget_Tags);
  166.    Gadget_Tags[0].ti_Tag  := GA_Disabled;
  167.    Gadget_Tags[0].ti_Data := False_;
  168.    With GadgetFlags Do Begin
  169.       ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 2;
  170.       ng_GadgetText := @G_B_SORTtxt[1];
  171.       ng_GadgetID   := G_B_SORT;
  172.    End;
  173.    Gads[G_B_SORT] := CreateGadgetA(BUTTON_KIND, Gads[G_B_BOTTOM], @Gadgetflags, @Gadget_Tags);
  174.    
  175.    Gadget_Tags[0].ti_Tag  := GA_Disabled;
  176.    Gadget_Tags[0].ti_Data := False_;
  177.  
  178.    With GadgetFlags Do Begin
  179.       ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 2;
  180.       ng_GadgetText := @G_B_NEWtxt[1];
  181.       ng_GadgetID   := G_B_NEW;
  182.    End;
  183.    Gads[G_B_NEW] := CreateGadgetA(BUTTON_KIND, Gads[G_B_SORT], @Gadgetflags, @Gadget_Tags);
  184.    
  185.    Gadget_Tags[0].ti_Tag  := GA_Disabled;
  186.    Gadget_Tags[0].ti_Data := True_;
  187.    With GadgetFlags Do Begin
  188.       ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 2;
  189.       ng_GadgetText := @G_B_REMOVEtxt[1];
  190.       ng_GadgetID   := G_B_REMOVE;
  191.    End;
  192.    Gads[G_B_REMOVE] := CreateGadgetA(BUTTON_KIND, Gads[G_B_NEW], @Gadgetflags, @Gadget_Tags);
  193.  
  194.    With GadgetFlags Do Begin
  195.       ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 2;
  196.       ng_GadgetText := @G_B_COPYtxt[1];
  197.       ng_GadgetID   := G_B_COPY;
  198.    End;
  199.    Gads[G_B_COPY] := CreateGadgetA(BUTTON_KIND, Gads[G_B_REMOVE], @Gadgetflags, @Gadget_Tags);
  200.    
  201.    Gadget_Tags[0].ti_Tag  := GA_Disabled;
  202.    Gadget_Tags[0].ti_Data := False_;
  203.    Gadget_Tags[2].ti_Tag  := GTST_MaxChars;
  204.    Gadget_Tags[2].ti_Data := 31;
  205.    Gadget_Tags[3].ti_Tag  := TAG_DONE;
  206.    With GadgetFlags Do Begin
  207.        ng_Width      := Sizes[S_G2_W];
  208.        ng_LeftEdge   := Sizes[S_G2_L];
  209.         ng_TopEdge    := Sizes[TBS] + 2;
  210.         ng_GadgetText := @G_S_TXTtxt[1];
  211.         ng_GadgetID   := G_S_TXT;
  212.         ng_Flags      := PLACETEXT_RIGHT;
  213.     End;
  214.     Gads[G_S_TXT] := CreateGadgetA(STRING_KIND, Gads[G_B_COPY], @Gadgetflags, @Gadget_Tags);
  215.     
  216.     Gadget_Tags[2].ti_Tag  := GTLV_ShowSelected;
  217.    Gadget_Tags[2].ti_Data := LONG(gads[G_S_TXT]);
  218.    Gadget_Tags[3].ti_Tag  := GTLV_Labels;
  219.    Gadget_Tags[3].ti_Data := LONG(CurrentList);
  220.    Gadget_Tags[4].ti_Tag  := TAG_END;
  221.    With GadgetFlags Do Begin
  222.       ng_LeftEdge   := sizes[S_G2_L];
  223.       ng_TopEdge    := Sizes[TBS] +2;
  224.       ng_Width      := Sizes[S_G2_W];
  225.       ng_Height     := (screendef^.Font^.ta_YSize * ListViewRows)+Sizes[S_GAD_H]+4;
  226.       ng_GadgetText := NIL;
  227.       ng_GadgetID   := G_LV;
  228.    End;
  229.    Gads[G_LV] := CreateGadgetA(LISTVIEW_KIND, Gads[G_S_TXT], @Gadgetflags, @Gadget_Tags);
  230.    If Gads[G_LV] = NIL Then
  231.       ErrExit('Failed to create gadgets'#0, 0);
  232.  
  233.    
  234.    Gadget_Tags[0].ti_Tag  := GA_Disabled;
  235.    Gadget_Tags[0].ti_Data := True_;
  236.     Gadget_Tags[2].ti_Tag  := GTST_MaxChars;
  237.    Gadget_Tags[2].ti_Data := 180;
  238.    Gadget_Tags[3].ti_Tag  := TAG_DONE;
  239.    With GadgetFlags Do Begin
  240.         ng_TopEdge    := gads[G_S_TXT]^.TopEdge + gads[G_S_TXT]^.Height  + 4;
  241.         ng_Width      := Sizes[S_G2_W];
  242.         ng_Height     := Sizes[S_GAD_H];
  243.         ng_GadgetText := @G_S_CMDtxt[1];
  244.         ng_Flags      := PLACETEXT_RIGHT;
  245.         ng_GadgetID   := G_S_CMD;
  246.     End;
  247.     Gads[G_S_CMD] := CreateGadgetA(STRING_KIND, Gads[G_LV], @Gadgetflags, @Gadget_Tags);
  248.  
  249.     Gadget_Tags[2].ti_Tag := TAG_END;
  250.     With GadgetFlags Do Begin
  251.         ng_LeftEdge   := sizes[S_G2_L] + (Sizes[S_G2_W] div 2);
  252.        ng_Width      := Sizes[S_G2_W] div 2;
  253.         ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 2;
  254.         ng_GadgetText := @G_B_CMDREQtxt[1];
  255.         ng_GadgetID   := G_B_CMDREQ;
  256.         ng_Flags := 0;
  257.     End;
  258.     Gads[G_B_CMDREQ] := CreateGadgetA(BUTTON_KIND, Gads[G_S_CMD], @Gadgetflags, @Gadget_Tags);
  259.  
  260.    Gadget_Tags[2].ti_Tag  := GTST_MaxChars;
  261.    Gadget_Tags[2].ti_Data := 1;
  262.    Gadget_Tags[3].ti_Tag  := TAG_DONE; 
  263.    With GadgetFlags Do Begin
  264.        ng_LeftEdge   := sizes[S_G2_L];
  265.        ng_Width      := Sizes[S_G2_W] div 4;
  266.         ng_GadgetText := @G_S_KEYtxt[1];
  267.         ng_GadgetID   := G_S_KEY;
  268.         ng_Flags      := PLACETEXT_RIGHT;
  269.     End;
  270.     Gads[G_S_KEY] := CreateGadgetA(STRING_KIND, Gads[G_B_CMDREQ], @Gadgetflags, @Gadget_Tags);
  271.     
  272.       Gadget_Tags[0].ti_Tag  := GA_Disabled;
  273.    Gadget_Tags[0].ti_Data := False_;
  274.       Gadget_Tags[2].ti_Tag  := GTIN_MaxChars;
  275.    Gadget_Tags[2].ti_Data := 3;
  276.    Gadget_Tags[3].ti_Tag  := GTIN_Number;
  277.    Gadget_Tags[3].ti_Data := CD.cd_Across;
  278.    Gadget_Tags[4].ti_Tag  := TAG_END;
  279.    With GadgetFlags Do Begin
  280.        ng_Width      := Sizes[S_G3_W];
  281.        ng_LeftEdge   := Sizes[S_G3_L]+4;
  282.        ng_Height     := Sizes[S_GAD_H];
  283.         ng_TopEdge    := Sizes[TBS] +5;
  284.         ng_GadgetText := @G_IK_ACROStxt[1];
  285.         ng_GadgetID   := G_IK_ACROS;
  286.     End;
  287.     Gads[G_IK_ACROS] := CreateGadgetA(INTEGER_KIND, Gads[G_S_KEY], @Gadgetflags, @Gadget_Tags);
  288.  
  289.    Gadget_Tags[2].ti_Tag  := GTNM_Border;
  290.    Gadget_Tags[2].ti_Data := True_;
  291.    Gadget_Tags[3].ti_Tag  := GTNM_Number;
  292.    Gadget_Tags[3].ti_Data := 337;
  293.    Gadget_Tags[4].ti_Tag  := TAG_END;
  294.     With GadgetFlags Do Begin
  295.         ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 2;
  296.         ng_GadgetText := @G_ND_DOWNtxt[1];
  297.         ng_GadgetID   := G_ND_DOWN;
  298.     End;
  299.     Gads[G_ND_DOWN] := CreateGadgetA(NUMBER_KIND, Gads[G_IK_ACROS], @Gadgetflags, @Gadget_Tags);
  300.     
  301.     Gadget_Tags[0].ti_Tag  := GA_Disabled;
  302.    Gadget_Tags[0].ti_Data := False_;
  303.    Gadget_Tags[2].ti_Tag  := TAG_END;
  304.    With GadgetFlags Do Begin
  305.        ng_Width      := Sizes[S_G3_L]+Sizes[S_G3_W]+Sizes[S_WB_L]+sizes[extra]-ng_LeftEdge-5;
  306.        ng_Height     := Sizes[S_GAD_H];
  307.         ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 2;
  308.         ng_GadgetText := CstrConstPtrAR(@RememberKey, 'Screen...');
  309.         ng_GadgetID   := G_S_SCRID;
  310.         ng_Flags := 0;
  311.     End;
  312.     Gads[G_S_SCRID] := CreateGadgetA(BUTTON_KIND, Gads[G_ND_DOWN], @Gadgetflags, @Gadget_Tags);
  313.  
  314.     With GadgetFlags Do Begin
  315.        ng_Width      := Sizes[S_G3_L]+Sizes[S_G3_W]+Sizes[S_WB_L]+sizes[extra]-ng_LeftEdge-5;
  316.         ng_TopEdge    := ng_TopEdge + sizes[S_Gad_H] + 2;
  317.         ng_GadgetText := @G_B_FONTtxt[1];
  318.         ng_GadgetID   := G_B_FONT;
  319.         ng_Flags      := 0;
  320.     end;
  321.     Gads[G_B_FONT] := CreateGadgetA(BUTTON_KIND, Gads[G_S_SCRID], @Gadgetflags, @Gadget_Tags);
  322.  
  323.     str(CD.cd_Font.ta_YSize, tmpstr);
  324.     fontstr := retrievestr(CD.cd_Font.ta_Name)+tmpstr+#0;
  325.  
  326.     Gadget_Tags[2].ti_Tag  := GTTX_Border;
  327.     Gadget_Tags[2].ti_Data := True_;
  328.     Gadget_Tags[3].ti_Tag  := GTTX_Text;
  329.     Gadget_Tags[3].ti_Data := LONG(NIL);
  330.     Gadget_Tags[4].ti_Tag  := TAG_DONE;
  331.  
  332.     With GadgetFlags do begin
  333.         ng_GadgetText := NIL;
  334.         ng_TopEdge := ng_TopEdge + sizes[S_Gad_H] + 2;
  335.     end;
  336.     Gads[G_TD_FONT] := CreateGadgetA(TEXT_KIND, Gads[G_B_FONT], @Gadgetflags, @Gadget_Tags);
  337.  
  338.    Gadget_Tags[0].ti_Tag  := GA_Disabled;
  339.    Gadget_Tags[0].ti_Data := False_;
  340.    Gadget_Tags[2].ti_Tag  := TAG_END;
  341.    With GadgetFlags Do Begin
  342.        ng_Width      := Sizes[S_G3_L]+Sizes[S_G3_W]+Sizes[S_WB_L]+sizes[extra]-ng_LeftEdge-5;
  343.        ng_Height     := Sizes[S_GAD_H];
  344.         ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 2;
  345.         ng_GadgetText := CstrConstPtrAR(@RememberKey, 'Palette...');
  346.         ng_GadgetID   := G_B_PALREQ;
  347.         ng_Flags := 0;
  348.     End;
  349.     Gads[G_B_PALREQ] := CreateGadgetA(BUTTON_KIND, Gads[G_TD_FONT], @Gadgetflags, @Gadget_Tags);
  350.  
  351.    Gadget_Tags[0].ti_Tag  := GA_Disabled;
  352.    Gadget_Tags[0].ti_Data := False_;
  353.    Gadget_Tags[2].ti_Tag  := TAG_END;
  354.    With GadgetFlags Do Begin
  355.        ng_Width      := Sizes[S_G3_L]+Sizes[S_G3_W]+Sizes[S_WB_L]+sizes[extra]-ng_LeftEdge-5;
  356.        ng_Height     := Sizes[S_GAD_H];
  357.         ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 2;
  358.         ng_GadgetText := CstrConstPtrAR(@RememberKey, 'Titles...');
  359.         ng_GadgetID   := G_B_TITREQ;
  360.         ng_Flags := 0;
  361.     End;
  362.     Gads[G_B_TITREQ] := CreateGadgetA(BUTTON_KIND, Gads[G_B_PALREQ], @Gadgetflags, @Gadget_Tags);
  363.  
  364.    Gadget_Tags[0].ti_Tag  := GA_Disabled;
  365.    Gadget_Tags[0].ti_Data := False_;
  366.    Gadget_Tags[3].ti_Tag  := TAG_DONE;
  367.    SampTxt.IText := @G_B_SAVEAStxt[1];
  368.    With GadgetFlags Do Begin
  369.       ng_TopEdge    := gads[G_S_KEY]^.TopEdge + gads[G_S_KEY]^.Height + 6;
  370.       ng_LeftEdge   := sizes[S_G1_L];
  371.       ng_Width      := IntuiTextLength(@Samptxt) + 10;
  372.       ng_GadgetText := @G_B_SAVEtxt[1];
  373.       ng_Flags      := 0;
  374.       ng_GadgetID   := G_B_SAVE;
  375.    End;
  376.     Gads[G_B_SAVE] := CreateGadgetA(BUTTON_KIND, Gads[G_B_TITREQ], @Gadgetflags, @Gadget_Tags);
  377.   
  378.    With GadgetFlags Do Begin
  379.         ng_Leftedge   := ng_LeftEdge + ng_Width + 2;
  380.       ng_GadgetText := @G_B_SAVEAStxt[1];
  381.       ng_GadgetID   := G_B_SAVEAS;
  382.       ng_Width      := ng_Width ;
  383.    End;
  384.    Gads[G_B_SAVEAS] := CreateGadgetA(BUTTON_KIND, Gads[G_B_SAVE], @Gadgetflags, @Gadget_Tags);
  385.          
  386.             
  387.    With GadgetFlags Do Begin
  388.         ng_Leftedge   := Sizes[S_G3_L] + Sizes[S_G3_W] + Sizes[S_WB_L] + sizes[extra] - ng_Width;
  389.       ng_GadgetText := @G_B_CANCELtxt[1];
  390.       ng_GadgetID   := G_B_CANCEL;
  391.    End;
  392.    Gads[G_B_CANCEL] := CreateGadgetA(BUTTON_KIND, Gads[G_B_SAVEAS], @Gadgetflags, @Gadget_Tags);
  393.     
  394.     With GadgetFlags Do Begin
  395.         ng_Leftedge   := ng_LeftEdge -(ng_Width) - 2;
  396.       ng_GadgetText := @G_B_LOADtxt[1];
  397.       ng_GadgetID   := G_B_LOAD;
  398.    End;
  399.    Gads[G_B_LOAD] := CreateGadgetA(BUTTON_KIND, Gads[G_B_CANCEL], @Gadgetflags, @Gadget_Tags);
  400.  
  401.     With GadgetFlags Do Begin
  402.         ng_Leftedge   := gads[G_B_SAVEAS]^.LeftEdge + ng_Width + 2;
  403.       ng_GadgetText := @G_B_INFOtxt[1];
  404.       ng_Width      := gads[G_B_LOAD]^.LeftEdge - 2 - ng_LeftEdge;
  405.       ng_GadgetID   := G_B_INFO;
  406.    End;
  407.    Gads[G_B_INFO] := CreateGadgetA(BUTTON_KIND, Gads[G_B_LOAD], @Gadgetflags, @Gadget_Tags);
  408.      
  409.    
  410.     If Gads[G_CC] = NIL Then
  411.       ErrExit('Failed to create gadgets'#0, 0);
  412.    
  413. (* window structure *)
  414.     Window_Tags[0].ti_Tag  := WA_Left;
  415.    Window_Tags[0].ti_Data := screendef^.MouseX - ((Sizes[S_G2_L] + Sizes[S_G2_W] + Sizes[S_WB_R] + Sizes[S_WB_L]) div 2);
  416.    Window_Tags[1].ti_Tag  := WA_Top;
  417.    Window_Tags[1].ti_Data := Screendef^.MouseY - ((GadgetFlags.ng_TopEdge + Sizes[S_Gad_H] + 2) div 2);
  418.    Window_Tags[2].ti_Tag  := WA_Width;
  419.    Window_Tags[2].ti_Data := Sizes[S_G3_L] + Sizes[S_G3_W] + Sizes[S_WB_R] + Sizes[S_WB_L] + sizes[extra]+4;
  420.    Window_Tags[3].ti_Tag  := WA_Height;
  421.    Window_Tags[3].ti_Data := gads[G_B_SAVE]^.TopEdge + gads[G_B_SAVE]^.Height + Sizes[S_WB_T] + Sizes[S_WB_B];
  422.    Window_Tags[4].ti_Tag  := WA_Title;
  423.    Window_Tags[4].ti_Data := LONG(@Win_Title[1]); 
  424.    Window_Tags[5].ti_Tag  := WA_IDCMP;
  425.    Window_Tags[5].ti_Data := WindowIDCMP;
  426.    Window_Tags[6].ti_Tag  := WA_CloseGadget;
  427.    Window_Tags[6].ti_Data := False_;
  428.    Window_Tags[7].ti_Tag  := WA_DragBar;
  429.    Window_Tags[7].ti_Data := True_;
  430.    Window_Tags[8].ti_Tag  := WA_DepthGadget;
  431.    Window_Tags[8].ti_Data := True_;
  432.    Window_Tags[9].ti_Tag  := WA_AutoAdjust;
  433.    Window_Tags[9].ti_Data := True_;
  434.    Window_Tags[10].ti_Tag := WA_Activate;
  435.    Window_Tags[10].ti_Data:= True_;
  436.    Window_Tags[11].ti_Tag := WA_Gadgets;
  437.    Window_Tags[11].ti_Data:= LONG(gads[G_NI]);
  438.    Window_Tags[12].ti_Tag := WA_SimpleRefresh;
  439.    Window_Tags[12].ti_Data:= True_;
  440.    Window_Tags[13].ti_Tag := WA_RMBTrap;
  441.    Window_Tags[13].ti_Data:= True_;
  442.    Window_Tags[14].ti_Tag := WA_PubScreenName;
  443.    Window_Tags[14].ti_Data:= LONG(@pubname[1]);
  444.    Window_Tags[15].ti_Tag := WA_PubScreenFallBack;
  445.    Window_Tags[15].ti_Data:= True_; 
  446.      Window_Tags[16].ti_Tag := WA_ScreenTitle;
  447.    Window_Tags[16].ti_Data:= LONG(@Scr_Title[1]);
  448.    Window_Tags[17].ti_Tag := TAG_DONE;
  449.   
  450.    TheWindow := OpenWindowTaglist(NIL,@Window_Tags);
  451.    If TheWindow = NIL Then 
  452.        ErrExit('Failed to create window'#0, 206);
  453.  
  454.    Gadget_Tags[0].ti_Tag  := TAG_IGNORE;
  455.    Gadget_Tags[0].ti_Data := True_;
  456.    Gadget_Tags[1].ti_Tag  := TAG_END;
  457.    setupbevelboxes;
  458.    displaybevelboxes;
  459.     GT_RefreshWindow(TheWindow, NIL);
  460.    UnlockFrontPubScr(pubname, ScreenDef);
  461.    CD.cd_Down := calcdown(CD.cd_Across);
  462.    UpDateFont;
  463.    
  464. End;
  465.  
  466. (* ===================================================================== *)
  467.  
  468. Procedure UpDateAcDown;
  469. VAR
  470.     t : array[0..1] of tTagItem;
  471. begin
  472.     T[0].ti_Tag  := GTIN_Number;
  473.     T[0].ti_Data := CD.cd_Across;
  474.     T[1].ti_Tag  := TAG_DONE;
  475.     GT_SetGadgetAttrsA(gads[G_IK_ACROS], Thewindow, NIL, @T);
  476.     CD.cd_Down := calcdown(CD.cd_Across);
  477. end;
  478.  
  479. (* ===================================================================== *)
  480.  
  481. Function ThirdGenAn(LeftEdge, TopEdge : LongInt) : Boolean;
  482. TYPE                                 (* Displays info *)
  483.     tGrafixData = Array[0..279] of Word;
  484.     pGrafixData = ^tGrafixData;
  485. CONST
  486.     fontname : string = 'topaz.font'#0;
  487.     WT : string = 'About Startup-Menu'#0;
  488.     ImgData : tGrafixData = (
  489. (* Plane 0 *)
  490.     $8A70,$0FFF,$FFFF,$FFFF,$FFF0,$80C6,$07FF,$FFFF,
  491.     $FFFF,$FFF0,$803E,$03FF,$FFFF,$FFBF,$FFF0,$80C1,
  492.     $01E0,$007F,$FF5F,$FFF0,$813E,$819F,$FFBF,$FEEF,
  493.     $FFF0,$82CF,$417F,$FFDF,$FDF7,$FFF0,$8507,$A2FF,
  494.     $FFBF,$FDF7,$FFF0,$8A07,$D50F,$FF7F,$FBFB,$FFF0,
  495.     $8A1F,$DA1F,$FEFF,$F7FD,$FC00,$FD25,$DBF8,$05FF,
  496.     $F7FD,$FC00,$FEA5,$D7E7,$007F,$AFBE,$FC00,$FF48,
  497.     $D72A,$FFBF,$DFB1,$7800,$FF90,$B655,$FFDF,$5FF1,
  498.     $7E00,$FFB4,$57DB,$FE5F,$BFF0,$AFF0,$FFDF,$E4D7,
  499.     $FE5F,$7FE0,$50F0,$542F,$D44F,$FC59,$45F8,$5050,
  500.     $0011,$F6A4,$0452,$87FF,$E800,$01FD,$F6E3,$F455,
  501.     $0803,$F400,$0202,$D2D8,$0455,$17FD,$5400,$05FC,
  502.     $2B07,$FC5A,$1405,$0A00,$0A7F,$EDB0,$045A,$2802,
  503.     $8A00,$14FF,$DEF4,$4054,$2802,$8500,$28FF,$BF6F,
  504.     $7028,$1405,$0280,$17FE,$4F9F,$FFD7,$EF82,$FDF0,
  505.     $0801,$EF60,$0028,$1F81,$03F0,$07FE,$AC7F,$FFC7,
  506.     $FF80,$FFF0,$0000,$B07F,$B000,$FFC0,$07F0,$0000,
  507.     $007F,$8000,$7FC0,$07F0,
  508. (* Plane 1 *)
  509.     $758F,$F000,$0000,$0FFF,$FFF0,$FF39,$F800,$0000,
  510.     $0FFF,$FFF0,$FFFF,$FC1F,$FF80,$3FFF,$FFF0,$FFFF,
  511.     $FE7F,$FFC0,$1FBF,$FFF0,$FFC1,$FEE0,$0060,$7F5F,
  512.     $FFF0,$FF30,$FF80,$00B0,$FEEF,$FFF0,$FEF8,$7F00,
  513.     $0060,$7EEF,$FFF0,$FDF8,$3EF0,$00C1,$FDF7,$FFF0,
  514.     $FDE0,$3DE0,$0183,$FBFB,$FFF0,$FEDA,$3DE7,$FB81,
  515.     $FBBB,$FFF0,$FF5A,$3BDF,$FFC7,$F75D,$FFF0,$FFB7,
  516.     $3BDF,$006F,$EF5E,$FFF0,$FFEF,$7BBE,$07BF,$EE0E,
  517.     $FFF0,$FFDF,$BBBC,$1FBF,$DCFF,$7FF0,$FFEF,$DBB8,
  518.     $3FBF,$BDFF,$BFF0,$FFF1,$EBB0,$03BF,$BBFF,$BFF0,
  519.     $FFFE,$EBDB,$FBBF,$7803,$DFF0,$FFFE,$EBDF,$FBBE,
  520.     $F7FD,$EFF0,$FFFD,$EDA7,$FBBE,$EFFE,$EFF0,$FE03,
  521.     $DDF8,$03BD,$EFFE,$F7F0,$FDFF,$DEFF,$FFBD,$DFFF,
  522.     $77F0,$FBFF,$BF5F,$FFBB,$DFFF,$7BF0,$F7FE,$7F97,
  523.     $FFD7,$EFFE,$FDF0,$F801,$FBE0,$0038,$187F,$0300,
  524.     $FFFF,$FFFF,$FFFF,$F07F,$FE00,$FFFF,$FF9F,$FFFF,
  525.     $E07F,$FC00,$FFFF,$FF81,$FFFF,$003F,$F800,$FFFF,
  526.     $FF80,$FFFF,$803F,$F800
  527.     );
  528.     PicImage : tImage = (
  529.      LeftEdge   : 0; 
  530.      TopEdge    : 0;
  531.      Width      : 76;
  532.      Height     : 28;
  533.      Depth      : 2;
  534.     ImageData  : NIL;
  535.     PlanePick  : $0003;
  536.     PlaneOnOff : $0000;
  537.     NextImage  : NIL
  538.     );
  539.  
  540. VAR
  541.     TheWin       : pWindow;
  542.     exitl        : boolean;
  543.     message      : pIntuiMessage;
  544.    MsgClass,
  545.    Dummy        : Long;
  546.    ImageDataPtr : pGrafixData;
  547.    Tgs          : Array[0..13] of tTagItem;
  548.    Infotxt      : array [0..11] of tIntuiText;
  549.    MyFont       : tTextAttr;
  550.    InfoStrs     : Array[0..11] of string;
  551.     
  552. begin
  553.     ImageDataptr := AllocMem(sizeof(tGrafixData), MEMF_CHIP);
  554.        if ImageDataPtr = NIL then ErrExit('Failed to allocate pointer memory'#0, 10);
  555.     
  556.     ImageDataPtr^ := ImgData;
  557.  
  558.    PicImage.ImageData := pWord(ImageDataPtr);
  559.    
  560.    WITH MyFont DO BEGIN
  561.       ta_Name  := @FontName[1];
  562.         ta_YSize := 8;
  563.         ta_Style := FS_NORMAL;
  564.         ta_Flags := FPF_ROMFONT;
  565.    END;
  566.  
  567.  
  568.     InfoStrs[0] := 'SMPrefs v1.00'#0;
  569.     InfoStrs[1] := 'Creates a preference file'#0;
  570.     InfoStrs[2] := 'file for Startup-Menu'#0;
  571.     InfoStrs[3] := ' '#0;
  572.     InfoStrs[4] := 'Programming : Lee Kindness'#0;
  573.     InfoStrs[5] := 'Gfx & Misc  : Adam Kindness'#0;
  574.     InfoStrs[6] := 'Comments to : '#0;
  575.     InfoStrs[7] := ' Lee Kindness'#0;
  576.     InfoStrs[8] := ' 8 Craigmarn Road'#0;
  577.     InfoStrs[9] := ' Portlethen'#0;
  578.     InfoStrs[10]:= ' ABERDEEN AB1 4QR'#0;
  579.     InfoStrs[11]:= ' SCOTLAND'#0;
  580.    
  581.    for i := 0 to 11 do
  582.     with InfoTxt[i] do begin
  583.       FrontPen  := 1;
  584.       BackPen   := 0;
  585.       DrawMode  := JAM1;
  586.       LeftEdge  := 0;
  587.       TopEdge   := (9*i);
  588.       ITextFont := @MyFont;
  589.       IText     := @InfoStrs[i,1];
  590.       if i < 11 then NextText  := @InfoTxt[i+1] else NextText := NIL
  591.     end;
  592.         
  593.     Tgs[0].ti_Tag  := WA_Width;
  594.     Tgs[0].ti_Data := 335;
  595.     Tgs[1].ti_Tag  := WA_Height;
  596.     Tgs[1].ti_Data := 125;
  597.     Tgs[2].ti_Tag  := WA_Title;
  598.     Tgs[2].ti_Data := LONG(@WT[1]);
  599.     Tgs[3].ti_Tag  := WA_IDCMP;
  600.     Tgs[3].ti_Data := IDCMP_CLOSEWINDOW OR IDCMP_REFRESHWINDOW
  601.                             OR IDCMP_MOUSEBUTTONS;
  602.     Tgs[4].ti_Tag  := WA_PubScreenName;
  603.     Tgs[4].ti_Data := LONG(@pubname[1]);
  604.     Tgs[5].ti_Tag  := WA_CloseGadget;
  605.    Tgs[5].ti_Data := True_;
  606.    Tgs[6].ti_Tag  := WA_DragBar;
  607.    Tgs[6].ti_Data := True_;
  608.    Tgs[7].ti_Tag  := WA_SimpleRefresh;
  609.    Tgs[7].ti_Data := True_;
  610.    Tgs[8].ti_Tag  := WA_RMBTrap;
  611.    Tgs[8].ti_Data := True_;
  612.    Tgs[9].ti_Tag  := WA_Activate;
  613.    Tgs[9].ti_Data := True_;
  614.    Tgs[10].ti_Tag := WA_Left;
  615.     Tgs[10].ti_Data:= LeftEdge;
  616.     Tgs[11].ti_Tag := WA_Top;
  617.     Tgs[11].ti_Data:= TopEdge;
  618.     Tgs[12].ti_Tag := WA_PubScreenFallBack;
  619.    Tgs[12].ti_Data:= True_;
  620.     Tgs[13].ti_Tag := TAG_DONE; 
  621.  
  622.     TheWin := OpenWindowTaglist(NIL,@Tgs);
  623.    If TheWin = NIL Then 
  624.        ErrExit('Failed to create window'#0, 206);
  625.        
  626.    DrawImage(TheWin^.RPort, @PicImage, 12, Sizes[TBS]+3);
  627.     DrawBevelBoxA(TheWin^.RPort, 10, sizes[TBS]+2, 81, 30 ,@BevelTags);
  628.    PrintIText(TheWin^.RPort, @InfoTxt, 100, sizes[TBS]+2);
  629.    
  630.    exitl := false;
  631.    While Not exitl Do Begin
  632.       dummy    := Wait(BitMask(TheWin^.UserPort^.MP_SIGBIT));
  633.       Repeat
  634.           message  := pIntuiMessage(GetMsg(TheWin^.userPort));
  635.           MsgClass := message^.Class;
  636.           
  637.           Case MsgClass Of
  638.              IDCMP_REFRESHWINDOW : begin
  639.                  GT_BeginRefresh(TheWin);
  640.                  DrawImage(TheWin^.RPort, @PicImage, 12, Sizes[TBS]+6);
  641.                  DrawBevelBoxA(TheWin^.RPort, 10, sizes[TBS]+5, 81, 30 ,@BevelTags);
  642.                  PrintIText(TheWin^.RPort, @InfoTxt, 100, sizes[TBS]+2);
  643.                  GT_EndRefresh(TheWin, True);
  644.              end;
  645.              
  646.              IDCMP_MOUSEBUTTONS : begin
  647.                  exitl := True;
  648.              end;
  649.               
  650.              IDCMP_CLOSEWINDOW : begin
  651.                  exitl := True;
  652.              end;
  653.          end; {CASE}
  654.       Until message = NIL;
  655.    End; (*while*)
  656.    CloseWindow(TheWin);
  657.    FreeMem_(ImageDataPtr, sizeof(tGrafixData));
  658.    ThirdGenAn := True;
  659. end;
  660. (* ===================================================================== *)